export interface AssetsItem {
  coin: string;
  ava: string;
  id: string;
  cid: string;
  frozen: string;
  label: string;
  status: string;
  amount: string;
}

export interface ISelectAssetsRequest {
  uid?: string;
  search?: string;
  hideSmall?: boolean;
}

export interface ISelectAssetsResponse {
  code: number;
  data: Array<AssetsItem>;
  msg: string;
}

export interface ICoinConfigItem {
  id: string;
  coin: string;
  depositAddress: string;
}

export interface ISelectCoinConfigResponse {
  code: number;
  data: Array<ICoinConfigItem>;
  msg: string;
}

export type ISelectCoinConfigRequest = undefined;

export interface IFindAssetsRequest {
  coin: string;
  uid: string;
}

export interface IAddressListsItem {
  remark: string;
  address: string;
}

export interface IFindAssetsResponseData {
  coin: string;
  total: string;
  ava: string;
  frozen: string;
  point: number;
  feeRatio: string;
  baseFee: string;
  withdraw: {
    min: string;
    max: string;
  };
  deposit: {
    min: string;
    confirm: string;
  };
}

export interface IFindAssetsResponse {
  code: number;
  data: IFindAssetsResponseData;
  msg: string;
}

export interface IWithdrawRequest {
  amount: string;
  coin: string;
  address: string;
  uid: string;
}

export interface IWithdrawResponse {
  code: number;
  data: Array<ICoinConfigItem>;
  msg: string;
}

export interface ISelectDepositHistoryRequest {
  search: string;
  coin: string;
}

export interface IDepositHistoryItem {
  coin: string;
  amount: string;
  address: string;
  txid: string;
  ago: number;
  now: number;
  status: string;
  id: string;
}

export interface ISelectDepositHistoryResponse {
  code: number;
  data: Array<IDepositHistoryItem>;
  msg: string;
}

export interface ISelectWithdrawHistoryRequest {
  search: string;
  coin: string;
}

export interface IWithdrawHistoryItem {
  coin: string;
  amount: string;
  address: string;
  txid: string;
  ago: number;
  now: number;
  status: string;
  id: string;
}

export interface ISelectWithdrawHistoryResponse {
  code: number;
  data: Array<IWithdrawHistoryItem>;
  msg: string;
}

export interface IAddressItem {
  coin: string;
  remark: string;
  address: string;
  id: string;
}

export interface IAddAddressRequest {
  coin: string;
  address: string;
  remark: string;
  uid: string;
}

export interface IAddAddressResponse {
  code: number;
  data: any;
  msg: string;
}

export interface IDelAddressRequest {
  id: string;
}

export interface IDelAddressResponse {
  code: number;
  data: any;
  msg: string;
}

export interface ISelectWithdrawAddressRequest {
  coin: string;
  uid: string;
}

export interface ISelectWithdrawAddressResponse {
  code: number;
  data: Array<IAddressItem>;
  msg: string;
}

export interface IFindDepositAddressRequest {
  coin: string;
}

export interface IFindDepositAddressResponse {
  code: number;
  data: any;
  msg: string;
}

export interface IFindAssetsToBtcRequest {
  empty?: string;
}

export interface IFindAssetsToBtcResponseData {
  ava: string;
  frozen: string;
  total: string;
}

export interface IFindAssetsToBtcResponse {
  code: number;
  data: IFindAssetsToBtcResponseData;
  msg: string;
}
